草庐IT

C++ std::atomic 与 Boost atomic

全部标签

c++ - clang 不知道 std::atomic_bool,但 XCode 知道

我正在尝试编译声明std::atomic_bool类型变量的C++11代码。这是在带有clang的MacOS10.8.2上:clang--versionAppleclangversion4.1(tags/Apple/clang-421.11.66)(basedonLLVM3.1svn)Target:x86_64-apple-darwin12.2.0Threadmodel:posixclang提示std::atomic_bool:clang++-c-stdlib=libc++-msse4-std=c++11-Wno-unused-parameter-I.-oquery.oquery.cp

c++ - std::find 跨一组 shared_ptr

我确定我在这里做了一些愚蠢的事情,但我看不到它。为什么不能编译以下内容?#include#include#include#include//Aclasstoplaywith.Encapsulatesaname.classStringClass{public:StringClass(std::stringconst&name):MyName(name){}std::stringconst&Name()const{returnMyName;}private:std::stringMyName;};//Thesetofinstancesof"StringClass".std::vector>

c++ - 命名空间 ‘function’ 中的 ‘std’ 没有命名类型

主.cc:#include#include#include"segtree.h"//NOLINTintmain(){constintn=8;SegmentTreesegmentTree(n,1,std::multiplies());for(inti=0;i分割树.h:#ifndefSEGTREE_H_//NOLINT#defineSEGTREE_H_#include#include#includetemplateclassSegmentTree{private:std::vectortree;intlevels;intn;intel;std::functionf;Tquery(intl

c++ - 为什么在使用 std::map::insert() 时编译顺序有时会导致段错误?

我有一个类叫做Controller,在其中,我有一个名为Button的类.Controller包含几个Button不同类型的实例(例如button_type_a、button_type_b)。controller.h#ifndef__controller__#define__controller__classController{public:classButton{public:Button(inttype=-1);private:inttype;};Controller();ButtonA;ButtonB;ButtonX;ButtonY;};#endif按钮类型为ints,我希望能

c++ - std::chrono::steady_clock::now 如何报告错误?

这与mypreviousquestion有关我问std::chrono::steady_clock::now是否应该是noexcept。现在我知道了,我应该想知道这个函数是如何报告错误的吗?例如,此功能在Linux上的常见实现使用clock_gettime可以返回错误。 最佳答案 Linuxclock_gettime工具可能报告的所有错误在std::chrono::steady_clock::now()的调试实现中是不可能的.错误是:intclock_gettime(clockid_tclk_id,structtimespec*tp

c++ - 通过 std::unique_ptr 扩展变量的生命周期

使用C++11unique_ptr,对象的生命周期似乎被延长到其通常范围之外,如下面(相当人为的)示例所示:#include#includeusingnamespacestd;intmain(){unique_ptruPtr(nullptr);{charc='X';cout输出:c=Xc=Y通常在作用域结束时释放的字符c一直存在到程序结束。第二个输出是“Y”,表明unique_ptr不只是简单地复制它的值。是否建议以某种方式延长变量的生命周期?这是否安全,或者它是否具有与引用相同的危险? 最佳答案 WiththeC++11uniqu

c++ - 为什么 std::next 不接受 InputIterator?

ISOC++1124.3:templatevoidadvance(InputIterator&i,Distancen);//...templateForwardIteratornext(ForwardIteratorx,typenamestd::iterator_traits::difference_typen=1);为什么std::next不接受InputIterator?我正在考虑的合法用例之一是:first=find(next(first,x),last,11);//...我找到合适的DR:next/prevreturnanincrementediteratorwithoutch

c++ - 由于在 32 位的 G++ 4.4.7 20120313 中使用 C++ std::vector 中的内联函数导致精度发生变化

我正在centos5.932位(在64位机器上运行)上编译,目标是32位。g++版本为4.4.7,这不是centos5.9上默认提供的版本,但可以使用yum下载并作为发行版的一部分提供。我有一个非常简单的循环如下std::vectorresult(n);std::vectorvalues(n);//hereIcomputevalues().TheyarecorrectandIextensivelynoted//thatthere'snothingwrongthere.Theproblemishereresult[0]=0.0;for(inti=0;i在此代码的更复杂版本中(它显示了完全

c++ - std::static_pointer_cast 是否有任何额外的运行时开销?

相对于static_cast,即。所以,如果我们有这两个类型转换Base*b(newDerived());Derived*d=static_cast(b);//(1)shared_ptrb(newDerived());shared_ptrd=static_pointer_cast(b);//(2)第(2)行会比第(1)行慢吗? 最佳答案 是的,它有更多的开销,因为它必须返回一个新的shared_ptr而不是一个新的原始指针。boost实现是:templateshared_ptrstatic_pointer_cast(shared_p

c++ - 查找 std::vector 中每个唯一值的频率的有效方法

给定一个vectorstd::vectorv,我们可以通过以下方式有效地找到独特的元素:std::vectoruv(v.begin(),v.end());std::sort(uv.begin(),uv.end());std::erase(std::unique(uv.begin,uv.end()),uv.end());创建vector的最佳方式是什么(没有循环,使用STL或lambda):std::vectorfreq_uv(uv.size());其中将包含出现在v中的每个不同元素的频率(顺序与排序的唯一值相同)?注意:类型可以是任何东西,而不仅仅是double